package com.tuju.jetpackfirstdemo.ui.longpic;

import android.os.Bundle;
import android.webkit.ValueCallback;
import android.webkit.WebChromeClient;
import android.webkit.WebResourceRequest;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import com.tuju.jetpackfirstdemo.R;
import com.tuju.jetpackfirstdemo.utils.HtmlUtils;

public class LongPicActivity extends AppCompatActivity {

    private WebView webview;
    private TextView tv_progress;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_long_pic);
        webview = findViewById(R.id.webview);
        tv_progress = findViewById(R.id.tv_progress);
        initWebView();

        webview.loadUrl("file:///android_asset/image.html");
    }

    private void initWebView() {
        webview.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }
        });

        WebSettings ws = webview.getSettings();
        // 网页内容的宽度是否可大于WebView控件的宽度
        ws.setLoadWithOverviewMode(false);
        // 保存表单数据
        ws.setSaveFormData(true);
        // 是否应该支持使用其屏幕缩放控件和手势缩放
        ws.setSupportZoom(true);
        ws.setBuiltInZoomControls(true);
        ws.setDisplayZoomControls(false);
        // 启动应用缓存
        ws.setAppCacheEnabled(true);
        // 设置缓存模式
        ws.setCacheMode(WebSettings.LOAD_DEFAULT);
        // setDefaultZoom  api19被弃用
        // 设置此属性，可任意比例缩放。
        ws.setUseWideViewPort(true);
        // 告诉WebView启用JavaScript执行。默认的是false。
        ws.setJavaScriptEnabled(true);
        //  页面加载好以后，再放开图片
        ws.setBlockNetworkImage(false);
        // 使用localStorage则必须打开
        ws.setDomStorageEnabled(true);
        // 第一种：排版适应屏幕(不生效 pass掉)
//        ws.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
        //第二种方法：设置加载进来的页面自适应手机屏幕
        //第一个方法设置webview推荐使用的窗口，设置为true。第二个方法是设置webview加载的页面的模式，也设置为true。
        //这方法可以让你的页面适应手机屏幕的分辨率，完整的显示在屏幕上，可以放大缩小。推荐使用第二张方法
        ws.setUseWideViewPort(true);
        ws.setLoadWithOverviewMode(true);

        // webview从5.0开始默认不允许混合模式,https中不能加载http资源,需要设置开启。
//		if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
//			ws.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
//		}
        /** 设置字体默认缩放大小(改变网页字体大小,setTextSize  api14被弃用)*/
//        ws.setTextZoom(100);
        // 不缩放
//        webview.setInitialScale(100);

        final String testStr = "  针伤科开设以来，始终遵循继承与创新相结合的原则，保持和发扬中医特色和优势，不断开拓业务，形成针刀和正骨两个中医特色专科。针伤科现有中医执业医师9名，其中副高职称有1名，中级职称4名，初级职称4名，较好的承担了我院住院病人和门诊病人的中医针灸、理疗的诊疗任务，中心下属6个卫生服务站点皆有中医医生开展相应的中医适宜技术，将中医医疗、养生保健、健康教育融入日常工作中，是市中医药服务社区示范点。针伤科可治疗各种伤科常见病及多发病，如颈椎病、腰椎病、老年性退行性膝关节炎等之外，还可针药结合治疗一些内科疑难杂症：如消渴（糖尿病），眩晕（高血压），中风（脑溢血、脑梗塞），中风后遗症（脑溢血、脑梗塞后遗症），胃病（急、慢性胃炎），咳嗽（急、慢性支气管炎）等。\"";
//        final String testPath = "file:///android_asset/html/pic_canbaojiuyizhinan.jpg";
//        final String testPath = "file:///android_asset/html/navi_info.png";
        final String testPath = "file:///android_asset/html/advice.jpg";
        webview.setWebChromeClient(new WebChromeClient() {
            @Override
            public void onProgressChanged(WebView view, int newProgress) {
                tv_progress.setText(newProgress + "%");
                if (newProgress == 100) {
                    Toast.makeText(LongPicActivity.this, "加载完成...", Toast.LENGTH_SHORT).show();
                    // 注意调用的JS方法名要对应上
                    // 调用javascript的callJS()方法
//                    webview.loadUrl("javascript:setFaceId('" + mFaceId + "')");

                    // 只需要将第一种方法的loadUrl()换成下面该方法即可
                    webview.evaluateJavascript("javascript:setText('" + testStr + "')", new ValueCallback<String>() {
                        @Override
                        public void onReceiveValue(String value) {
                            //此处为 js 返回的结果
                        }
                    });

                    webview.evaluateJavascript("javascript:changImage('" + testPath + "')", new ValueCallback<String>() {
                        @Override
                        public void onReceiveValue(String value) {
                            //此处为 js 返回的结果
                        }
                    });
                }
            }
        });
    }
}
